package gui;
import poly.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Gui {
private JFrame frame = new JFrame();
private JButton add = new JButton("+");
private JButton sub = new JButton("-");
private JButton mul = new JButton("*");
private JButton div = new JButton("/");
private JButton drv = new JButton("Derivate P1");
private JButton intg = new JButton("Integrate P1");
private JTextField pol1 = new JTextField();
private JTextField pol2 = new JTextField();
private JTextField re = new JTextField();
private JLabel p1 = new JLabel("P1:");
private JLabel p2 = new JLabel("P2:");
private JLabel res = new JLabel("Result:");
private JPanel IOPanel = new JPanel(new BorderLayout());
private JPanel OpPanel = new JPanel(new GridLayout(2, 3, 50, 50));
private JPanel labelPanel = new JPanel(new GridLayout(3, 1, 50, 50));
private JPanel textPanel = new JPanel(new GridLayout(3, 1, 50, 50));
private static String poly1 = new String();
private static String poly2 = new String();
private String result = new String();
private Operations op = new Operations();
private Polynomial p;
private Polynomial polynom;
private Monomial mon1, mon2;
private String helper = new String();
private String polyString;
private int x, i = 0, size;
public Gui() {
re.setEditable(false);
add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
polynom = op.addition(getP1(), getP2());
result = Gui.this.toString(polynom);
re.setText(result);
}
});
drv.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
polynom = op.derivate(getP1());
result = Gui.this.toString(polynom);
re.setText(result);
}
});
sub.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
polynom = op.subtraction(getP1(), getP2());
result = Gui.this.toString(polynom);
re.setText(result);
}
});
intg.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
polynom = op.integrate(getP1());
result = Gui.this.toString(polynom);
re.setText(result);
}
});
div.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
polynom = op.divide(getP1(), getP2());
result = Gui.this.toString(polynom);
re.setText(result);
}
});
mul.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
polynom = op.multiply(getP1(), getP2());
result = Gui.this.toString(polynom);
re.setText(result);
}
});
labelPanel.add(p1);
labelPanel.add(p2);
labelPanel.add(res);
textPanel.add(pol1);
textPanel.add(pol2);
textPanel.add(re);
IOPanel.add(labelPanel, BorderLayout.WEST);
IOPanel.add(textPanel, BorderLayout.CENTER);
OpPanel.add(add);
OpPanel.add(mul);
OpPanel.add(intg);
OpPanel.add(sub);
OpPanel.add(div);
OpPanel.add(drv);
frame.add(IOPanel);
frame.add(OpPanel);
frame.setLayout(new GridLayout(2, 1, 20, 20));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(1024, 480);
}
public Polynomial toPolynomial(String s) {
Pattern ints = Pattern.compile("[\\+-]?\\d+");
Matcher mat = ints.matcher(s);
p = new Polynomial();
mon1 = null;
i = 0;
while (mat.find() == true) {
helper = mat.group();
x = Integer.parseInt(helper);
if (i % 2 == 0) {
mon1 = new Monomial();
mon1.setIntCoeff(x);
} else {
mon1.setPower(x);
p.addToPoly(mon1);
}
if (i == 1) {
p.setDegree(x);
}
i++;
}
for (i = 0; i < p.getSize(); i++) {
mon1 = p.getElement(i);
System.out.print(mon1.getIntCoeff() + " " + mon1.getPower() + " ");
}
System.out.println();
return p;
}
public String toString(Polynomial pol) {
size = pol.getSize();
polyString = new String();
mon2 = null;
for (int i = 0; i < size; i++) {
mon2 = pol.getElement(i);
if (mon2.getIntCoeff() > 0)
polyString = polyString + "+" + mon2.getIntCoeff() + "x^" + mon2.getPower();
else {
if (mon2.getIntCoeff() != 0)
polyString = polyString + mon2.getIntCoeff() + "x^" + mon2.getPower();
}
if (mon2.getDoubleCoeff() > 0)
polyString = polyString + "+" + mon2.getDoubleCoeff() + "x^" + mon2.getPower();
else {
if (mon2.getDoubleCoeff() != 0)
polyString = polyString + mon2.getDoubleCoeff() + "x^" + mon2.getPower();
}
}
System.out.println(polyString);
return polyString;
}
public Polynomial getP1() {
poly1 = pol1.getText();
return toPolynomial(poly1);
}
public Polynomial getP2() {
poly2 = pol2.getText();
return toPolynomial(poly2);
}
}